add_library(PrecompileStdHeaders INTERFACE)
add_library(PrecompileQtHeaders INTERFACE)

if (TB_ENABLE_PCH)
  target_precompile_headers(PrecompileStdHeaders INTERFACE
    <algorithm>
    <any>
    <array>
    <atomic>
    <bitset>
    <cassert>
    <chrono>
    <cmath>
    <compare>
    <csignal>
    <cstddef>
    <cstdint>
    <cstdio>
    <cstdlib>
    <cstring>
    <exception>
    <filesystem>
    <fstream>
    <functional>
    <future>
    <initializer_list>
    <iosfwd>
    <iostream>
    <istream>
    <iterator>
    <limits>
    <list>
    <map>
    <memory>
    <mutex>
    <numeric>
    <optional>
    <ostream>
    <ranges>
    <set>
    <sstream>
    <stdexcept>
    <string_view>
    <string>
    <thread>
    <tuple>
    <type_traits>
    <unordered_map>
    <unordered_set>
    <utility>
    <variant>
    <vector>
  )

  target_precompile_headers(PrecompileQtHeaders INTERFACE
    <QAbstractItemModel>
    <QAbstractItemView>
    <QAbstractListModel>
    <QAbstractTableModel>
    <QAction>
    <QApplication>
    <QBoxLayout>
    <QBrush>
    <QButtonGroup>
    <QByteArray>
    <QChar>
    <QCheckBox>
    <QChildEvent>
    <QClipboard>
    <QCloseEvent>
    <QColor>
    <QColorDialog>
    <QComboBox>
    <QCommandLineParser>
    <QCompleter>
    <QCoreApplication>
    <QCursor>
    <QDataStream>
    <QDateTime>
    <QDebug>
    <QDesktopServices>
    <QDialog>
    <QDialogButtonBox>
    <QDir>
    <QDoubleSpinBox>
    <QDrag>
    <QElapsedTimer>
    <QEvent>
    <QFile>
    <QFileDialog>
    <QFileInfo>
    <QFileInfo>                 
    <QFileSystemWatcher>
    <QFont>
    <QFontDatabase>
    <QFormLayout>
    <QFrame>
    <QGridLayout>
    <QGuiApplication>
    <QHBoxLayout>
    <QHeaderView>
    <QIcon>
    <QImage>
    <QInputDialog>
    <QIODevice>
    <QItemEditorFactory>
    <QItemSelectionModel>
    <QJsonDocument>
    <QJsonObject>
    <QJsonParseError>
    <QJsonValue>
    <QKeyEvent>
    <QKeySequence>
    <QKeySequenceEdit>
    <QLabel>
    <QLayout>
    <QLineEdit>
    <QList>
    <QListWidget>
    <QListWidgetItem>
    <QLocale>
    <QLockFile>
    <QMainWindow>
    <QMenu>
    <QMenuBar>
    <QMessageBox>
    <QMetaEnum>
    <QMetaMethod>
    <QMimeData>
    <QMouseEvent>
    <QMutex>
    <QMutexLocker>
    <QNtfsPermissionCheckGuard> 
    <QObject>
    <QPainter>
    <QPaintEvent>
    <QPalette>
    <QPixmap>
    <QPoint>
    <QPointer>
    <QProcess>
    <QProcessEnvironment>
    <QPropertyAnimation>
    <QProxyStyle>
    <QPushButton>
    <QRadioButton>
    <QRegularExpression>
    <QResizeEvent>
    <QSaveFile>
    <QScreen>
    <QScrollArea>
    <QScrollBar>
    <QSettings>
    <QShortcut>
    <QSizePolicy>
    <QSlider>
    <QSortFilterProxyModel>
    <QSpinBox>
    <QSplitter>
    <QStackedLayout>
    <QStackedWidget>
    <QStandardPaths>
    <QStatusBar>
    <QString>
    <QStringBuilder>
    <QStringDecoder>
    <QStringEncoder>
    <QStringList>
    <QStyle>
    <QStyledItemDelegate>
    <QSvgRenderer>
    <QSysInfo>
    <QTableView>
    <QTableWidget>
    <QTextCursor>
    <QTextEdit>
    <QTextStream>
    <QtGlobal>
    <QThread>
    <QTimer>
    <QToolBar>
    <QToolButton>
    <QToolTip>
    <QUrl>
    <QUuid>
    <QVariant>
    <QVBoxLayout>
    <QWidget>
    <QWindow>
  )
endif()
